As application complexity and associated computational demands continue to increase over time, various techniques have been developed to improve computational efficiency, such as distributed processing, parallelization, and on-demand virtualization of various computational resources. One of the many benefits of distributed computing, and particularly virtualized computing, is the ability to control, define, and modify the capabilities and functionality of deployed resources according to the demands for those resources.
However, the additional flexibility provided by such distributed systems often comes at the cost of additional complexity from the perspective of application development. For example, deployment of code updates that imply, prefer, or necessitate a change in the underlying infrastructure upon which the code is intended to operate, often occurs first in an environment under control of the developer. However, the infrastructure associated with the developer's test environment, and changes to that environment caused by the code deployment, may not necessarily correlate with the production deployment structure on which the code will eventually operate.